function info = getassetinfo(asset)
%return futures contract information associated with the underlying asset
[asset_list,type_list,bcode_list,wcode_list,exchange_list,...
          trading_hours,contract_size,tick_size,trading_break,...
          margin_rate,transaction_cost,asset_list_map] = getassetmaptable();
idx = -1;
for i = 1:length(asset_list)
    if strcmpi(asset_list{i},asset)
        idx = i;
        break;
    end
end
if idx < 0
    error(['invalid asset name:',asset]);
end

if strcmpi(asset,'eqindex_300') || ...
        strcmpi(asset,'eqindex_50') || ...
        strcmpi(asset,'eqindex_500')
    suffix = ' Index';
else
    suffix = ' Comdty';
end

info = struct('AssetName',asset,...
              'AssetType',type_list{idx},...
              'BloombergCode',bcode_list{idx},...
              'BloombergSec1',[bcode_list{idx},'1',suffix],...
              'BloombergSecA',[bcode_list{idx},'A',suffix],...
              'WindCode',wcode_list{idx},...
              'ExchangeCode',exchange_list{idx},...
              'TradingHours',[trading_hours{idx,1},';',...
                              trading_hours{idx,2},';',...
                              trading_hours{idx,3}],...
              'ContractSize',contract_size(idx),...
              'TickSize',tick_size(idx),...
              'TradingBreak',trading_break{idx},...
              'MarginRate',margin_rate(idx),...
              'TransactionCost',transaction_cost{idx,1},...
              'TransactionCostIntraday',transaction_cost{idx,2},...
              'TransactionCostType',transaction_cost{idx,3},...
              'AssetNameMap',asset_list_map{idx});


end